package com.administrator.scoreManageSys.mapper.system;

import com.administrator.scoreManageSys.entity.system.User;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;

/**
 * 用户相关mapper
 * @author Administrator
 */
public interface SystemUserAuthenticationMapper {

    /**
     * 根据用户名获取用户信息
     * @param account 用户名
     * @return 用户信息
     */
    User selectUserByUserName(@Param("account") String account);

    /**
     * 根据用户id获取用户所有信息
     * @param userId 用户id
     * @return 用户信息
     */
    User getUserByUserId(@Param("userId") Long userId);

    /**
     * 是否设置密保
     * @param user 用户
     * @return 是否设置密保
     */
    int checkSecurity(@Param("user") User user);

    /**
     *  用户设置密保
     * @param passwordProtection 密保集合
     * @param userId 用户id
     */
    void setPasswordProtection(@Param("passwordProtection") JSONArray passwordProtection, @Param("userId") Long userId);

    /**
     * 删除用户密保
     * @param userId 用户id
     */
    void deleteProtection(@Param("userId") Long userId);

    /**
     * 修改密码
     * @param userId 用户id
     * @param newPassword 用户密码
     */
    void changePassword(@Param("userId") Long userId, @Param("newPassword") String newPassword);

    /**
     * 查询用户设置的密码保护
     * @param account 账号
     * @return 密码保护
     */
    JSONObject selectUserPasswordProtection(@Param("account") String account);
}
